Tamper-proofing and anti-piracy technologies protect software in different ways, using different technological approaches. Tamper-proofing prevents would-be attackers from hacking software by, for example, discovering how the software works, and then spoofing or preventing certain software operations in order to produce a result other than that intended by the original developer. For example, an attacker may wish to tamper with videogame software in order to cheat in online gaming. By discovering how the videogame software and online service function, the attacker could theoretically cheat by causing the software of, e.g., the game, game console, or online service, to give him certain advantages over other players connected to the online service.
Tamper-proofing technologies that protect against such attacks include anti-debugging and module authentication technologies. Anti-debugging technologies prevent would-be attackers from running a debugger while the protected software is executing. Module authentication technologies prevent runtime modification of code pages.
Anti-piracy technologies, on the other hand, prevent copyright infringement by preventing unauthorized persons from making and distributing unauthorized copies of software. Copyright infringement of digital works such as software and digital pictures, music, and videos is rampant due to the low cost of making unauthorized copies, and the easy distribution of such copies on the Internet.
Anti-piracy technologies may, for example, attempt to tie a copy of software existing on a computer hard drive to a physical medium such as a Digital Versatile Disk (DVD), thereby requiring a computer executing the software to have physical access to a certified copy of the software. Anti-piracy technologies may also use a so-called activation model, whereby the application is associated with a unique value (e.g., a 5×5 product key), that may only be used once, or a limited number of times. This model requires connectivity to a server (e.g., over the internet) that validates and maintains the association of the activated product keys. Activation-based schemes are often used for digital distribution of video games. For example the ACTIVEMARK® product made by MACROVISION® is an example of an activation-based technology. Furthermore, anti-piracy technologies may utilize code pages in an executing process (i.e., as part of the executable/DLL), but in an encrypted form. Anti-piracy code decrypts those code pages before they're needed—perhaps during the application's initialization, or alternatively, in a “just in time” fashion (e.g., when a particular protected subroutine is invoked). The protected code is thus not available “in the clear” in a form easily accessible by an attacker (e.g., in unencrypted form on the hard disk or CD/DVD). Finally, anti-piracy technology may also attach to a process during runtime much like a debugger, to prevent reverse-engineering for the purpose of removing protections and copying the copyrighted content. Some other anti-piracy products include SAFEDISK®, made by MACROVISION®, and SECUROM®, made by SONY DADC®.
When tamper-proofing and anti-piracy technologies operate simultaneously, the anti-piracy technologies may trip the tamper-proofing (anti-debugging and module authentication) technologies. The result is that simultaneous execution of the technologies can lead to conflicts that degrade performance and stymie interoperability with varying degrees of seriousness depending on the extent of incompatibility. In order to achieve adequate software security in many scenarios, what is needed are systems, methods, and computer readable media for improving simultaneous tamper-proofing and anti-piracy protection of software.